import { defineConfig, loadEnv } from "vite";
import path from "path";
import createVitePlugins from "./vite/plugins";

// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
	const env = loadEnv(mode, process.cwd());
	const { VITE_PUBLIC_PATH, VITE_APP_PROXY_IP } = env;
	return {
		// 部署生产环境和开发环境下的URL。
		// 默认情况下，vite 会假设你的应用是被部署在一个域名的根路径上
		// 例如 https://www.zmxt.vip/。如果应用被部署在一个子路径上，你就需要用这个选项指定这个子路径。例如，如果你的应用被部署在 https://www.zmxt.vip/admin/，则设置 baseUrl 为 /admin/。
		base: VITE_PUBLIC_PATH,
		plugins: createVitePlugins(env, command === "build"),
		optimizeDeps: {
			include: [
				`monaco-editor/esm/vs/language/json/json.worker`,
				`monaco-editor/esm/vs/language/css/css.worker`,
				`monaco-editor/esm/vs/language/html/html.worker`,
				`monaco-editor/esm/vs/language/typescript/ts.worker`,
				`monaco-editor/esm/vs/editor/editor.worker`
			]
		},
		resolve: {
			// https://cn.vitejs.dev/config/#resolve-alias
			alias: {
				// 设置路径
				"~": path.resolve(__dirname, "./"),
				// 设置别名
				"@": path.resolve(__dirname, "./src")
			},
			// https://cn.vitejs.dev/config/#resolve-extensions
			extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"]
		},
		// vite 相关配置
		server: {
			port: 80,
			host: true,
			open: true,
			proxy: {
				// 主应用用户模块服务
				"/dev-api/userAuth": {
					// target: "http://192.168.100.205/api",
					target: `http://${VITE_APP_PROXY_IP}/api/userAuth`,
					changeOrigin: true,
					rewrite: p => p.replace(/^\/dev-api\/userAuth/, "")
				},
				// 设备台账服务
				"/dev-api/device": {
					// target: "http://192.168.100.205/api",
					target: `http://${VITE_APP_PROXY_IP}/api/device`,
					changeOrigin: true,
					rewrite: p => p.replace(/^\/dev-api\/device/, "")
				}
				// 子应用服务
			}
		}
	};
});
